home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 406_01 / atoc / trigraph.c < prev   
Text File  |  1993-11-09  |  1KB  |  46 lines

  1. /*=========================================================================
  2.  
  3.     ATOC trigraph module
  4.  
  5. =========================================================================*/
  6.  
  7. #include <stdio.h>
  8. #include "atoc.h"
  9.  
  10.  
  11. /*-------------------------------------------------------------------------
  12. trigraph( s ) replaces any trigraphs with their standard equivalents.
  13. -------------------------------------------------------------------------*/
  14. trigraph( s )
  15. char *s;
  16. {
  17.     static struct {            /* trigraph table */
  18.         char *tg;        /* trigraph sequence */
  19.         char *std;        /* standard character */
  20.     } table[] = {
  21.         { "??=", "#" },
  22.         { "??(", "[" },
  23.         { "??/", "\\" },
  24.         { "??)", "]" },
  25.         { "??'", "^" },
  26.         { "??<", "{" },
  27.         { "??!", "|" },
  28.         { "??>", "}" },
  29.         { "??-", "~" },
  30.         { NULL, NULL },
  31.     };
  32.     char *cp, *strstr();
  33.     int i;
  34.  
  35.     if ( trigraphflag )
  36.         for ( cp = s; ( cp = strstr( cp, "??" ) ) != NULL; ++cp )
  37.             for ( i = 0; table[ i ].tg; ++i )
  38.                 if ( strncmp( cp, table[ i ].tg, 3 ) == 0 )
  39.                 {
  40.                     strcpy( cp, cp + 3 );
  41.                     strins( cp, table[ i ].std );
  42.                     break;
  43.                 }
  44. }
  45. /*=======================================================================*/
  46.